Mac下 Docker 动态添加端口 | 您所在的位置:网站首页 › mac 目录映射 › Mac下 Docker 动态添加端口 |
目录 一、原理 二、新增端口 1、查看container id 2、进入配置文件 3、进入screen 4、修改文件内容 4.1 修改config.v2.json 4.2 修改hostconfig.json 5、退出screen 三、查看新增结果 四、Mac下 Docker 动态添加端口常遇问题及处理 一、原理Docker 动态添加端口的原理是使用 Docker 的 expose 命令来指定容器暴露的端口,但并不会自动将容器内部的端口与宿主机的端口进行映射。这时需要使用 docker run 命令的 -p 参数来手动将容器内部的端口映射到宿主机的端口。 具体流程如下: 在 Dockerfile 中使用 EXPOSE 命令指定容器将要暴露的端口,如:EXPOSE 80/tcp。构建镜像并启动容器。使用 docker ps 命令查看容器的信息,包括容器 ID 和端口映射信息。使用 docker port 命令可以查看容器内部端口映射到宿主机的端口。如果需要动态添加端口,可以使用 docker commit 命令对容器进行快照,然后使用 docker run 命令的 -p 参数将容器内部的端口映射到宿主机的端口上。总的来说,Docker 动态添加端口的实现主要依赖于 Docker 自身的端口暴露和端口映射功能。 二、新增端口发现开放的端口不够用了,但是还不想重新创建容器咋整 1、查看container id不管是使用docker ps,docker ps -a,docker inspect containerName哪种方式先获得容器的id,这里我使用inspect docker inspect jenkinsdemo | grep Id返回的信息如下: "Id": "64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf",或者使用可视化docker直接点击: 便可直接跳出容器id,并进入容器: 2、进入配置文件Mac下Docker容器的配置文件在~/Library/Containers/com.docker.docker目录 cd ~/Library/Containers/com.docker.docker需要修改的文件在Data/vms/0下 cd Data/vms/0 3、进入screen在~/Library/Containers/com.docker.docker/Data/vms/0目录下有一个tty文件,在终端键入screen tty进行登录,此时会进入一个screen空白窗口,回车即可 注:如果出现screen is terminating这个提示,请参照下面操作: docker run -it --privileged --pid=host justincormack/nsenter1执行上面命令,啥也不要改,第一次执行会进入容器终端,接着执行 cd /var/lib/docker/containers && ls此时我们会看到一些文件夹: 64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf fdd17afcb6c7fcb78cfc1626935641059476a464cc4de5e1b7db74a9802db3b6我们使用①中获取的container id,进入到对应的目录 cd 64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf && ls此时可以看到如下内容: 64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf-json.log checkpoints config.v2.json hostconfig.json hostname hosts mounts resolv.conf resolv.conf.hash 4、修改文件内容接着修改config.v2.json和hostconfig.json文件对应的端口映射部分 4.1 修改config.v2.json通过vi找到要修改的关键字ExposedPorts, 原先的内容如下: ExposedPorts":{"50000/tcp":{},"8080/tcp":{}},那我们要增加暴露的8000端口,那么就是配置如下: ExposedPorts":{"50000/tcp":{},"8080/tcp":{},"8000/tcp":{}},修改完之后保存该文件 4.2 修改hostconfig.json通过vi找到要修改的关键字PortBindings 原先的内容为 "PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8082"}]},那我们要增加8000端口映射到主机的8000端口,那么配置如下: "PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8082”}]},"8000/tcp":[{"HostIp":"","HostPort":"8000"}]}修改完之后保存该文件 5、退出screen输入ctrl+a+c(先按ctrl,再按a,然后按c即可) 三、查看新增结果命令查看: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 64f7c751e5df jenkins/jenkins "/sbin/tini -- /usr/…" 2 weeks ago Up 19 hours 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 50000/tcp, 0.0.0.0:8082->8080/tcp, :::8082->8080/tcp jenkinsdemo可视化docker查看: 四、Mac下 Docker 动态添加端口常遇问题及处理在Mac下使用Docker时,可能会遇到动态添加端口的问题。这通常是由于Mac的网络环境与Docker的网络环境不同所导致的。以下是处理该问题的步骤: 确认Docker容器内的端口映射是否正确。可以使用docker port ;container_name>命令来查看。 确认Mac的防火墙是否允许端口访问。可以使用sudo lsof -i:;port_number>命令来检查端口是否被占用,并且确认Mac的防火墙是否允许该端口访问。 确认Mac的网络环境是否与Docker的网络环境有冲突。如果Mac的网络环境与Docker的网络环境不同,可能会导致端口无法访问。这时可以尝试使用docker run --net=host命令启动容器,让容器共享Mac的网络环境。 确认Docker的端口映射是否正确。在Docker中使用-p ;host_port>:;container_port>命令来映射端口,确保端口映射的正确性。 如果以上步骤仍然无法解决问题,可以尝试重新启动Docker服务或重启Mac电脑。 总之,处理Mac下Docker动态添加端口的问题需要进行多方面的排查和分析,对于不同的情况可能需要采用不同的解决方案。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |